home *** CD-ROM | disk | FTP | other *** search
- // Gravitation - Version D1-1.3
-
- // Dieses Skript wendet eine Gravitationskraft auf Ebene 1 an. Die Ausgangsgeschwindigkeit
- // entspricht der Geschwindigkeit am Anfang des Arbeitsbereiches.
-
- // EBENE EIGENSCHAFT KANAL
- // ----- ------------- ------
- // 1: VerΣnderte Ebene Wird nicht berⁿcksichtigt Wird nicht berⁿcksichtigt
- // 2: Wird nicht berⁿcksichtigt Wird nicht berⁿcksichtigt Wird nicht berⁿcksichtigt
-
- if (time() == start_time) {
- vel = tmap (time() + step_time, value(pop_layer(1), position)) -
- value(pop_layer(1), position);
- damping = 0.95; // DΣmpfung (0 = unendlich gro▀, 1 = unendlich klein)
- grav = 0.9; // Gravitationskraft
- grav_dir = {0,1,0}; // Gravitationsrichtung
- accel = grav * grav_dir; // Gravitationsvektor
-
- new_pos = value(pop_layer(1), position);
- } else {
-
- vel = vel*damping + accel; // Geschwindigkeit beschleunigen
- new_pos = new_pos + vel; // Geschwindigkeit auf Position anwenden
-
- // Bei Erreichen des Kompositionsrandes abprallen
- if (new_pos[X] < 0) {
- new_pos[X] = 0;
- vel = {-vel[X], vel[Y]};
- }
- if (new_pos[Y] < 0) {
- new_pos[Y] = 0;
- vel = {vel[X], -vel[Y]};
- }
- if (new_pos[X] > comp_size[X]) {
- new_pos[X] = comp_size[X];
- vel = {-vel[X], vel[Y]};
- }
- if (new_pos[Y] > comp_size[Y]) {
- new_pos[Y] = comp_size[Y];
- vel = {vel[X], -vel[Y]};
- }
- }
- value(pop_layer(1), position) = new_pos;
-